iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0

影片教學

Yes

主要內容

哈希函數是一種密碼學工具,它可以將任意長度的數據轉換成固定長度的一串字符,通常用作數據的唯一標識或加密簽名。在 Solidity 中,有一個常用的哈希函數叫做 Keccak256,它具有以下特性

1.單向性

從輸入的數據生成哈希值是容易的,但從哈希值反推出原始數據是非常困難的,幾乎不可能。

2.靈敏性

原始數據的微小改變會導致生成的哈希值大幅不同,即使只修改一個字節。

3.高效性

計算哈希值的過程應該高效,不需要很長時間。

4.均勻性

每個可能的哈希值都應該以相等的概率被生成,避免衝突。

在 Solidity 中,你可以使用 Keccak256 函數來生成哈希值,例如用於創建數據的唯一標識。你可以將不同類型的數據,如整數(uint)、字符串(string)、地址(address)等,使用abi.encodePacked方法打包編碼,然後將其傳遞給keccak256函數生成唯一標識。

此外,哈希函數具有弱抗碰撞性和強抗碰撞性。弱抗碰撞性意味著找到兩個不同的輸入,使它們的哈希值相等是困難的,而強抗碰撞性意味著找到任意兩個不同的輸入,使它們的哈希值相等是極其困難的。

你可以在 Solidity 中編寫函數來演示這些性質,例如驗證哈希值是否相等以測試弱抗碰撞性,以及驗證兩個不同的輸入是否會產生相同的哈希值以測試強抗碰撞性。

總之,哈希函數在以太坊智能合約中具有廣泛的應用,用於數據的唯一標識、加密簽名和數據完整性驗證等方面。理解哈希函數的性質和在Solidity中的使用方法對於智能合約開發非常重要。

相關連結

WTF Solidity Hash
keccak256 online


上一篇
Solidity 入門走到飛🚀-【Day27】ABI編碼解碼 - encode、decode
下一篇
Solidity 入門走到飛🚀-【Day29】函數選擇器 - Selector
系列文
30天讓你從【零基礎】掌握智能合約 Solidity 入門走到飛30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言